package com.spring.vencent.client;

import javax.naming.Context;

import com.spring.vencent.container.JNDIContainer;
import com.spring.vencent.service.DBService;
import com.spring.vencent.service.LogService;

/**
 * 使用jndi的提供的服务（服务容器提供对象引用(根据配置文件获取到的信息也保留到了Reference类中)和名称的绑定， 当lookup时，对象工厂类在决定创建怎样的服务对象返回）
 * @author 1d
 *
 */
public class JNDIClient {
	public static void main(String[] args) {
		try {
			JNDIContainer container = new JNDIContainer();
			container.init();

			// JNDI客户端使用标准JNDI接口访问命名服务。
			Context ctx = container.getContext();
			DBService db = (DBService) ctx.lookup("DBService");
			System.out.println("db location is:" + db.getLocation() + ",state is:" + db.getState());
			db.accessDB();

			LogService ls = (LogService) ctx.lookup("LogService");
			ls.log("this is a log message.");

			container.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
